# 使用urllib爬取有道翻译的信息，输入英文后获取对应的中文翻译信息
# 第七周作业1)
# 班级：Python五期
# 学员：李子坚

from urllib import request,parse
import json

import time
import random
import hashlib

def translate(keyword):
    '''通过爬取有道翻译实现中英文翻译'''
    # 定义请求URL地址和参数，并编码转换
    url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"

    data = {
        'i': keyword,
        'from': 'AUTO',
        'to': 'AUTO',
        'smartresult': 'dict',
        'client': 'fanyideskweb',
        'salt': '1529491352547',
        'sign': 'f205aa41705ab1b85d9ef3874f770789',
        'doctype': 'json',
        'version': '2.1',
        'keyfrom': 'fanyi.web',
        'action': 'FY_BY_REALTIME',
        'typoResult': 'false'
    }
    data = parse.urlencode(data)

    #设置hearders头信息
    headers={'Content-Length':len(data)}
    
    try:
        #创建请求，发送请求，爬取信息
        req = request.Request(url,data=bytes(data,encoding="utf-8"),headers=headers)
        res = request.urlopen(req)

        # 解析爬取结果
        str_json = res.read().decode("utf-8")
        #print(str_json)
        myjson = json.loads(str_json)

        print("有道翻译结果：%s"%(myjson['translateResult'][0][0]['tgt']))
    except Exception as e:
        if hasattr(e,'reason'):
            print(e.reason)

        if hasattr(e,'code'):
            print(e.code)

# 主程序
if __name__ == '__main__':
    while True:
        keyword = input("请输入要翻译词（输入q退出）：")
        if keyword == 'q':
            break
        translate(keyword)
